Over the last several years, an unprecedented growth in the volume of stored digital data has occurred. For example, it has been reported that one exabyte (or 1018 bytes) of new digital data is made available each year to users on the Internet. Given the ever increasing amount of digital data, a scalable storage space that can meet the search and storage demands of applications and users becomes increasingly important.
Hierarchal file systems are traditionally used to store data for applications. These file systems typically require the user to know a file name to access a desired file stored in the file system. This significantly limits an application's ability to efficiently access, share, and manage the files stored in the file system. For example, if some of the content of a file is known but the file name is unknown, a user may not be able to find the desired file.
Databases may be used to provide content-based searching and to provide other data management capabilities for stored data. Databases typically use a predefined schema for organizing stored data. The schemas typically rely on predetermined relationships between data to generate a schema for organizing the data. However, over time, the relationships between the stored data may evolve, and conventional databases generally cannot adapt to an evolving schema based on the new relationships between the stored data. The relationships between the stored data are used for managing the stored data, searching the stored data, and performing other functions. Therefore, the relatively static schemas used by a conventional database may affect the performance of the database, such as limiting the searching capability of the database.